/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	qr_scan.c
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-05-24
**	Function List： 
**  History:         
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/
#include "4g_mod.h"
#include <rtthread.h>
/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/
#define _4G_MOD_BUFF_SIZE 1024

/*
*********************************************************************************************************
*                                              	结构体定义
*********************************************************************************************************
*/

 
/*
*********************************************************************************************************
*                                              	函数原型声明
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*                                              	全局变量定义
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              	模块静态变量定义
*********************************************************************************************************
*/
static bsp_uart_t* p_debug;
static bsp_uart_t* p_4g;

static void _4g_mod_recv_cb(void* arg,uint8_t*,uint16_t);
static void _debug_recv_cb(void* arg,uint8_t*,uint16_t);

static uint8_t tx_buff[_4G_MOD_BUFF_SIZE];
static uint8_t rx_buff[_4G_MOD_BUFF_SIZE];

static char debug_cmd[] = "AT+CAMM=?";
//static uint8_t tx_buff[_4G_MOD_BUFF_SIZE];
//static uint8_t rx_buff[_4G_MOD_BUFF_SIZE];
/*
*********************************************************************************************************
*                                              	函数定义
*********************************************************************************************************
*/
void _4g_mod_init(void)
{
	__HAL_RCC_GPIOB_CLK_ENABLE();
	GPIO_InitTypeDef  GPIO_InitStruct;
	GPIO_InitStruct.Mode      = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull      = GPIO_PULLUP;
	GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_HIGH;
	GPIO_InitStruct.Pin       = GPIO_PIN_9;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);
	
	__HAL_RCC_GPIOG_CLK_ENABLE();
	GPIO_InitStruct.Mode      = GPIO_MODE_OUTPUT_OD;
	GPIO_InitStruct.Pull      = GPIO_PULLUP;
	GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_HIGH;
	GPIO_InitStruct.Pin       = GPIO_PIN_11|GPIO_PIN_12;
	HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_12,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_11,GPIO_PIN_RESET);
	rt_thread_delay(50);
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_11,GPIO_PIN_SET);
	rt_thread_delay(50);
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_11,GPIO_PIN_RESET);
	
	
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_12,GPIO_PIN_SET);
	rt_thread_delay(3000);
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_12,GPIO_PIN_RESET);
	rt_thread_delay(500);
	
	p_debug = bsp_uart_init(_4G_MOD_DEBUG_CHN,_4G_MOD_BAUDRATE);
	bsp_uart_tx_dma_init(p_debug,NULL);
	bsp_uart_rx_dma_init(p_debug,_debug_recv_cb,tx_buff,_4G_MOD_BUFF_SIZE);
	
	p_4g = bsp_uart_init(_4G_MOD_UART_CHN,_4G_MOD_BAUDRATE);
	bsp_uart_tx_dma_init(p_4g,NULL);
	bsp_uart_rx_dma_init(p_4g,_4g_mod_recv_cb,rx_buff,_4G_MOD_BUFF_SIZE);
	
//	bsp_uart_dma_transfer(p_4g,debug_cmd,strlen(debug_cmd));
}
static void _4g_mod_recv_cb(void* arg,uint8_t* buff,uint16_t size)
{
	if(buff != NULL && size != 0)
	{
		bsp_uart_dma_transfer(p_debug,buff,size);
	}
}
static void _debug_recv_cb(void* arg,uint8_t* buff,uint16_t size)
{
	if(buff != NULL && size != 0)
	{
		bsp_uart_dma_transfer(p_4g,buff,size);
	}
}